package com.alks.function.mapper.biocontrol.webwork;

import com.alks.entity.data.entity.PsScheduleHead;
import com.alks.entity.data.entity.PsScheduleLot;
import com.alks.function.data.dto.biocontrol.webwork.MoldProgTempDto;
import com.alks.function.data.request.biocontrol.webwork.MoldProgtTempRequest;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author ms
 * @since 2024-10-07
 */
public interface PsScheduleLotMapper extends BaseMapper<PsScheduleLot> {

    /**
     * 未排指令查询
     * @param request 查询条件
     * @param companyId 公司id
     * @return 查询结果
     */
    List<MoldProgTempDto> unSchLotTempQuery(@Param("request") MoldProgtTempRequest request, @Param("companyId") String companyId);

    /**
     * 未排指令数量统计
     *
     * @param request   查询条件
     * @param companyId 公司id
     * @return 查询结果
     */
    List<Map<String, Object>> unSchLotTempSumQuery(@Param("request") MoldProgtTempRequest request, @Param("companyId") String companyId);

    /**
     * 整单排产后数据更新
     * @param schLotList 排产数据
     */
    void allSchUp(@Param("schLotList") List<PsScheduleLot> schLotList);

    /**
     * 取消排产回滚
     *
     * @param headList  需要回滚的数据
     * @param companyId 公司ID
     */
    void schBackUp(@Param("headList") List<PsScheduleHead> headList, @Param("companyId") String companyId);

    /**
     * 指令更新-插入新指令
     */
    void upLotIns(@Param("companyId") String companyId, @Param("userName") String userName);

    /**
     * 指令更新-删除指令
     * @param companyId 公司id
     */
    void upLotDel(@Param("companyId") String companyId);

    /**
     * 指令更新-需要更新的指令
     * @param companyId 公司id
     * @return 需要更新的指令
     */
    List<String> upLotQuery(@Param("companyId") String companyId);

    /**
     * 指令更新-更新库存
     * @param companyId 公司id
     */
    void upLotStk(@Param("companyId") String companyId);
}
